﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BusinessLayer;
using DataObjects;
using System.Data;
namespace ControleCaixa
{
    public partial class registraVenda : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                carregaCliente();
                carregaEvento();
                carregaProdutoVenda();
            }

            if (Session["caixaoperacaoId"] != null)
            {
                divPainel.Style.Add("display", "none");
                divItem.Style.Add("display", "block");
            }
            else
            {
                divItem.Style.Add("display", "none");
                divPainel.Style.Add("display", "block");
            }

        }

        protected void btnVoltar_Click(object sender, EventArgs e)
        {
            Session["caixaId"] = null;
            Response.Redirect("viewCaixa.aspx");
        }

        public void carregaProdutoVenda()
        {
            if (Session["caixaoperacaoId"] != null)
            {
                OperacaoLancamentoBL _operacao = new OperacaoLancamentoBL();
                OperacaoLancamento _op = new OperacaoLancamento();
                gridProdutoVenda.DataSource = convertdataTable(_operacao.ConsultarCaixaOperacao(int.Parse(Session["caixaoperacaoId"].ToString())));
                gridProdutoVenda.DataBind();

            }
        }

        public DataTable convertdataTable(List<OperacaoLancamento> _listaoperacaoLancamento)
        {
            DataTable data = new DataTable();
            data.Columns.Add("operacaolancamentoId");
            data.Columns.Add("produtoid");
            data.Columns.Add("produto");


            DataRow row;
            foreach (OperacaoLancamento operacaoLancamento in _listaoperacaoLancamento)
            {
                row = data.NewRow();
                row["operacaolancamentoId"] = operacaoLancamento.OperacaoLancamentoId;
                row["produtoid"] = operacaoLancamento.ProdutoId;
                row["produto"] = operacaoLancamento.Produto.Descricao;
                data.Rows.Add(row);
            }

            return data;

        }

        public void carregaCliente()
        {
            PessoaBL _pessoaBL = new PessoaBL();
            ddlCliente.DataSource = _pessoaBL.Consultar();
            ddlCliente.DataBind();

        }

        public void carregaEvento()
        {
            EventoBL _eventoBL = new EventoBL();
            ddlOperacao.DataSource = _eventoBL.Consultar();
            ddlOperacao.DataBind();

        }


        protected void btnInicia_Click(object sender, EventArgs e)
        {
            CaixaOperacaoBL _caixaoperacaoBL = new CaixaOperacaoBL();
            CaixaOperacao _caixaoperacao = new CaixaOperacao();
            _caixaoperacao.CaixaId = int.Parse(Session["caixaId"].ToString());
            _caixaoperacao.EventoId = int.Parse(ddlOperacao.SelectedValue);
            _caixaoperacao.PessoaId = int.Parse(ddlCliente.SelectedValue);
            Usuario _usuario = (Usuario)Session["usuario"];
            _caixaoperacao.UsuarioAberturaId = _usuario.UsuarioId;
            _caixaoperacao.DataAbertura = DateTime.Now;
            Session["caixaoperacaoId"] = _caixaoperacaoBL.Inserir(_caixaoperacao).ToString();
            //Session["caixaoperacao"]
            if (Session["caixaoperacaoId"] != null)
            {
                divPainel.Style.Add("display", "none");
                divItem.Style.Add("display", "block");
            }
            else
            {
                divItem.Style.Add("display", "none");
                divPainel.Style.Add("display", "block");
            }
        }

        protected void imgDelete_Click(object sender, ImageClickEventArgs e)
        {
            try
            {
                ImageButton _imageB = (ImageButton)sender;
                OperacaoLancamentoBL _operacaolancamentoBL = new OperacaoLancamentoBL();
                _operacaolancamentoBL.Deletar(int.Parse(_imageB.CommandArgument));
                carregaProdutoVenda();
            }
            catch (Exception ex)
            {
                mensagem.InnerHtml = "Não foi possível excluir produto.";
            }
        }

        protected void btnInsere_Click(object sender, EventArgs e)
        {
            OperacaoLancamentoBL _operacaoLancamentoBL = new OperacaoLancamentoBL();
            OperacaoLancamento _operacaoLancamento = new OperacaoLancamento();
            _operacaoLancamento.CaixaOperacaoId = int.Parse(Session["caixaoperacaoId"].ToString());
            _operacaoLancamento.DataAcao = DateTime.Now;
            _operacaoLancamento.Observacao = txtObservacao.Text;
            _operacaoLancamento.ProdutoId = int.Parse(txtProduto.Text);
            _operacaoLancamentoBL.Inserir(_operacaoLancamento);
            carregaProdutoVenda();

        }

        protected void btnPesquisa_Click(object sender, EventArgs e)
        {
            consulta();
        }

        public void consulta()
        {
            ProdutoBL _produtoBL = new ProdutoBL();
            List<Produto> _listProduto = _produtoBL.Consultar(txtProduto.Text);
            gridProduto.DataSource = _listProduto;
            gridProduto.DataBind();
        }

        protected void imgSeleciona_Click(object sender, ImageClickEventArgs e)
        {
            ImageButton _imageB = (ImageButton)sender;
            txtProduto.Text = _imageB.CommandArgument;
            divProduto.Style.Add("display", "none");
        }

        protected void btnLocaliza_Click(object sender, EventArgs e)
        {
            divProduto.Style.Add("display", "block");
        }

    }
}